package org.example.exam.mapper;


import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.example.exam.entity.Question;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.example.exam.vo.QuestionQueryVo;

import java.util.List;
import java.util.Map;

/**
 * 题目Mapper接口
 * 继承MyBatis Plus的BaseMapper，提供基础的CRUD操作
 */
public interface QuestionMapper extends BaseMapper<Question> {


    // 1、我们可以定义一个实体类来装查询到的问题编号和对象的数量
    // 2、使用Map集合，一个Map集合中可以装多对键值对，通过键值对的形式来保存category_id=?与count=?的关系，最后再将Map集合装入list集合中
    @Select("select category_id, count(*) count from questions where is_deleted = 0 group by category_id;")
    List<Map<String,Long>> selectCategoryQuestionCount();

    // 定义一个查询方法，还想使用Mybatis-plus的分页插件
    // 方法规则：返回值必须是IPage 方法名（第一个参数必须是IPage【分页参数，煤业显示条件】，其他参数）
    // mybatis-plus会将查询的结果放在我们传递给它的IPage对象里面
    IPage<Question> selectQuestionPage(IPage<Question> page, @Param("queryVo") QuestionQueryVo query);
} 